As the scale and scope of network-based applications and network-based services such as cloud computing services have increased, data centers may house hundreds or even thousands of host devices (e.g., web servers) that need to be load balanced. Conventional load balancers may generally include one or more network interface controllers (NICs), for example eight NICs, that handle inbound traffic from/outbound traffic to clients and inbound traffic to/outbound traffic from the host devices (e.g., servers such as web servers) that are being load balanced. Load balancers typically also include logic that implements load balancing techniques such as round robin and/or least connections (least conns) techniques to select which host device will handle a connection from a client.
In conventional load balancers, clients communicate with selected host devices on connection(s) that pass through the load balancer, and thus the data exchanged between a client and a selected host device in a conventional load balanced system flows through the load balancer. Some conventional load balancers may serve as proxies to the host devices that they front, and thus may terminate connections (e.g., Transmission Control Protocol (TCP) connections) from the clients and send the client traffic to the host devices on connections (e.g., TCP connections) established between the host devices and the load balancer. In other conventional load balancers, the load balancer does not terminate connections from the client and the host device. Instead, connections (e.g., Transmission Control Protocol (TCP) connections) are established between clients and host devices that pass through the load balancer. The load balancer modifies header information (e.g., TCP and IP header information) in packets that pass through the load balancer on the connections to transparently route traffic between the clients and host devices. These load balancers may be viewed as serving as routing/network address translation (NAT) firewalls between the clients and the load balanced host devices.
Multipath TCP
Multipath TCP (MPTCP) is a network protocol proposed by the Internet Engineering Task Force (IETF) in the document Request for Comments (RFC) 6824. In traditional Transmission Control Protocol/Internet Protocol (TCP/IP), communication is restricted to a single path per connection, even though multiple possible paths may exist between peers. RFC 6828 presents MPTCP as a set of extensions to traditional TCP to support multipath operation and thus allow multiple TCP flows across two or more potentially disjoint paths for a connection between two peers. Note that both peers would need to support the MPTCP protocol in order to establish multiple paths for a connection according to MPTCP.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.